package com.estagio.entity;

import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;

import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;

@Entity
@Table (name="condicaoPagamento")
public class CondicaoPagamento {

	@Id
	@SequenceGenerator(name="condicaoPagamento_id", sequenceName="condicaoPagamento_id_seq",allocationSize=1,initialValue = 1)
	@GeneratedValue(strategy=GenerationType.SEQUENCE,generator="condicaoPagamento_id" )
	private Integer idCondicaoPagamento;
	@Column(length=40)
	private String descricao;
	@Column(length=200)
	private String observacao;
	
	@JoinColumn(name="idFormaPagamento")
	@ManyToOne
	private FormaPagamento formaPagamento;
	
	@OneToMany(cascade=CascadeType.ALL, mappedBy="condicaoPagamento", fetch = FetchType.EAGER)
	@Fetch(FetchMode.SUBSELECT)
	private List<Parcela> listaParcela;

	public Integer getIdCondicaoPagamento() {
		return idCondicaoPagamento;
	}

	public void setIdCondicaoPagamento(Integer idCondicaoPagamento) {
		this.idCondicaoPagamento = idCondicaoPagamento;
	}

	public String getDescricao() {
		return descricao;
	}

	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}

	public String getObservacao() {
		return observacao;
	}

	public void setObservacao(String observacao) {
		this.observacao = observacao;
	}

	public FormaPagamento getFormaPagamento() {
		return formaPagamento;
	}

	public void setFormaPagamento(FormaPagamento formaPagamento) {
		this.formaPagamento = formaPagamento;
	}

	public List<Parcela> getListaParcela() {
		return listaParcela;
	}

	public void setListaParcela(List<Parcela> listaParcela) {
		this.listaParcela = listaParcela;
	}
	
	

}
